<?php
	include_once $_SERVER["DOCUMENT_ROOT"].'/service/entite/compte/CompteService.php';
	include_once $_SERVER["DOCUMENT_ROOT"].'/service/entite/role/RoleService.php';
	include_once $_SERVER["DOCUMENT_ROOT"].'/service/entite/compte/CompteEntite.php';
	include_once $_SERVER["DOCUMENT_ROOT"].'/service/uc/gerercompte/CompteVO.php';
	include_once $_SERVER["DOCUMENT_ROOT"].'/service/uc/gerercompte/GererCompteVOAssembler.php';
	
	class GererCompteService {
		public static function ajouterCompte() {
			$compte = CompteService::createCompte();
			return GererCompteVOAssembler::createCompteVO($compte);
		}
		
		public static function modifierCompte($id) {
			$compte = CompteService::getCompteForModification($id);
			return GererCompteVOAssembler::createCompteVO($compte);
		}
		
		public static function validerCompte(CompteVO $compteVO) {
			$compte = GererCompteVOAssembler::getEntity($compteVO);
			//Sauvegarde du compte
			CompteService::save($compte);
			
			//sauvegarde de la liste des rôles
			$listeIdRole = Array();
			foreach ($compteVO->listeRoleVO as $roleVO) {
				$listeIdRole[] = $roleVO->id;
			}
			CompteService::saveListeIdRole($compte, $listeIdRole);
		}
		
		public static function supprimerCompte($id) {
			CompteService::supprimerCompte($id);
		}
		
		public static function getListeCompteVO() {
			$listeCompte = CompteService::getListeCompte(); 
			return GererCompteVOAssembler::createListeCompteVO($listeCompte);
		}
		
		public static function getRoleVOByID($idRole) {
			$roleVO = RoleService::getRoleForModification($idRole);
			return GererCompteVOAssembler::createRoleVO($roleVO);
		}
		public static function convertListeIdToListeRoleVO($listeIdRoleVO) {
			$listeRoleVO = Array();
			foreach ($listeIdRoleVO as $idRoleVO ) {
				$listeRoleVO[] = GererCompteVOAssembler::createRoleVOMinimaliste($idRoleVO);
			}
			return $listeRoleVO;
		}
		public static function getCompteVO($login, $motDePasse) {
			$compte = CompteService::getCompte($login, $motDePasse);
			return GererCompteVOAssembler::createCompteVO($compte);
		}
	}
?>